﻿<?xml version="1.0" encoding="utf-8"?>

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="dotObjects">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="core">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="contexts">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element maxOccurs="unbounded" name="context">
                                            <xs:complexType mixed="true">
                                                <xs:sequence minOccurs="0">
                                                    <xs:element name="settings">
                                                        <xs:complexType>
                                                            <xs:sequence>
                                                                <xs:element maxOccurs="unbounded" name="add">
                                                                    <xs:complexType>
                                                                        <xs:attribute name="name" type="xs:string" use="required" />
                                                                        <xs:attribute name="value" type="xs:string" use="required" />
                                                                    </xs:complexType>
                                                                </xs:element>
                                                            </xs:sequence>
                                                        </xs:complexType>
                                                    </xs:element>
                                                </xs:sequence>
                                                <xs:attribute name="name" type="xs:string" use="required" />
                                                <xs:attribute name="type" type="xs:string" use="required" />
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                    <xs:attribute name="default" type="xs:string" use="required" />
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="modelAssemblies">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element maxOccurs="unbounded" name="assembly">
                                            <xs:complexType>
                                                <xs:simpleContent>
                                                    <xs:extension base="xs:string">
                                                        <xs:attribute name="name" type="xs:string" use="required" />
                                                        <xs:attribute name="rootNamespace" type="xs:string" use="required" />
                                                        <xs:attribute name="localizationResource" type="xs:string" use="required" />
                                                    </xs:extension>
                                                </xs:simpleContent>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                        <xs:attribute name="applicationName" type="xs:string" use="required" />
                    </xs:complexType>
                </xs:element>
                <xs:element name="rendering">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="templates">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element maxOccurs="unbounded" name="template">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="domains">
                                                        <xs:complexType>
                                                            <xs:sequence>
                                                                <xs:element maxOccurs="unbounded" name="add">
                                                                    <xs:complexType>
                                                                        <xs:attribute name="typeName" type="xs:string" use="optional" />
                                                                        <xs:attribute name="fileName" type="xs:string" use="required" />
                                                                        <xs:attribute name="attributes" type="xs:string" use="optional" />
                                                                    </xs:complexType>
                                                                </xs:element>
                                                            </xs:sequence>
                                                        </xs:complexType>
                                                    </xs:element>
                                                </xs:sequence>
                                                <xs:attribute name="filter" type="xs:string" use="required" />
                                                <xs:attribute name="fileName" type="xs:string" use="required" />
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                        <xs:attribute name="path" type="xs:string" use="required" />
                        <xs:attribute name="layoutFileName" type="xs:string" use="required" />
                        <xs:attribute name="type" type="xs:string" use="required" />
                    </xs:complexType>
                </xs:element>
                <xs:element name="security">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="provider">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="settings">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element maxOccurs="unbounded" name="add">
                                                        <xs:complexType>
                                                            <xs:attribute name="name" type="xs:string" use="required" />
                                                            <xs:attribute name="value" type="xs:string" use="required" />
                                                        </xs:complexType>
                                                    </xs:element>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                    <xs:attribute name="type" type="xs:string" use="required" />
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="authorization">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element maxOccurs="unbounded" minOccurs="0" name="uri">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="allow" minOccurs="0" maxOccurs="unbounded">
                                                        <xs:complexType>
                                                            <xs:attribute name="roles" type="xs:string" use="required" />
                                                            <xs:attribute name="expression" type="xs:string" use="optional" />
                                                        </xs:complexType>
                                                    </xs:element>
                                                    <xs:element name="deny" minOccurs="0" maxOccurs="unbounded">
                                                        <xs:complexType>
                                                            <xs:attribute name="roles" type="xs:string" use="required" />
                                                            <xs:attribute name="expression" type="xs:string" use="optional" />
                                                        </xs:complexType>
                                                    </xs:element>
                                                </xs:sequence>
                                                <xs:attribute name="pattern" type="xs:string" use="required" />
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>